package com.three.core.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.Date;

/**
* 订单表
* @TableName tb_product_order
*/
@TableName(value ="tb_product_order")
@Data
public class ProductOrder implements Serializable {

    /**
    * 订单ID
    */
    @TableId(type= IdType.AUTO)
    private BigInteger id;
    /**
    * 订单号
    */

    private String orderNo;
    /**
    * 用户ID
    */

    private Integer userId;
    /**
    * 门店编号
    */

    private Integer storeId;
    /**
    * 商品id
    */

    private Integer productId;
    /**
    * 门店名称
    */

    private String storeName;
    /**
    * 商品名称
    */

    private String productName;
    /**
    * 商品数量
    */

    private Integer productCount;
    /**
    * 订单总金额
    */

    private BigDecimal totalAmount;
    /**
    * 订单总积分
    */

    private BigDecimal totalIntegral;
    /**
    * 订单状态，0：待支付，1：已支付，2：待发货，3：已发货，4：已完成，5：已关闭，6 已兑换
    */

    private Integer statusCode;
    /**
    * 订单创建时间
    */

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime createTime;
    /**
    * 订单更新时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime updateTime;
    /**
    * 订单支付时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime payTime;
    /**
    * 订单发货时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime deliverTime;
    /**
    * 订单完成时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime finishTime;
    /**
    * 订单备注
    */

    private String message;
    /**
    * 收货地址id
    */

    private Integer address;
    /**
    * 支付类型 （0 微信支付 1 积分兑换  2 微信加积分）
    */


    private Integer payType;


    @TableField(exist = false)
    private Product product;


    @TableField(exist = false)
    private UserAddress userAddress;

    //用户信息
    @TableField(exist = false)
    private Store store;


}
